package sgc;

import java.util.Calendar;

/**
 * @author Diego Pereira do Nascimento e Leonardo Santos Martins
 * 
 * Descrição da classe::
 * Está classe tem como propósito ser utilizada para fazer todos os testes em tempo de execução das outras classes.
 *  
 */
public class SGC {
    public static void main(String[] args) {
        
        int opQ, opM, opI;
        int idCon = 0, idCan = 0, idInc = 0, idQuest = 0;
        Leitura ler = new Leitura();
        Calendar data = Calendar.getInstance();
        Questao quest[] = new Questao[5];
        Endereco end[] = new Endereco[5];
        Concurso conc[] = new Concurso[5], aux;
        Candidato cand[] = new Candidato[5];
        Inscricao insc[] = new Inscricao[5];
        
        // Candidatos
        end[0] = new Endereco("Rua das Flores", 405, "19000-000", "Cidade da Baixada", "AC");
        end[1] = new Endereco("Rua dos Embaixadores", 307, "11000-000", "Santa Mônica", "PR");
        cand[0] = new Candidato("Carlos Nobrega", "123456", "(00)0000-00000", end[0], 123);
        cand[1] = new Candidato("Gonçalvez Júnior Camilo", "951473", "(11)1111-1111", end[1], 279);
        
        // Questões
        quest[0] = new VF(1, "Eleições 2014.", "Quem quanhou foi Luciana Genro.", false);
        quest[1] = new VF(2, "Eleiões 2014", "O candidato acusado de homofobia nas eleições foi Levy Fidelix", true);
        
        // Concursos
        data.set(2014,9,4);
        conc[0] = new Concurso("Vestibular Escola Técnica Rural 2014", data, quest);
        conc[1] = new Concurso("Vestibular Faculdade Agrícola Municipal", data, quest);
        
        // Atribui novos valores aos id*
        idCan = 2;
        idCon = 2;
        idQuest = 2;
        
        do{
            System.out.println("================Menu================");
            System.out.println(" 1) Cadastrar Candidato \n 2) Cadastrar Questão \n 3) Cadastrar Concurso \n 4) Fazer Inscrição\n-1) Sair");
            opM = ler.lerInt();
            
            switch(opM){
               
                case 1:
                    if(idCan >= cand.length){
                        System.out.println("Não pode ser cadastrado mais candidatos!");
                    } else {
                        // OBS, o endereço será instanciado dentro do método criar da classe Candidato
                        System.out.printf("Cadastro do %dº candidato::\n\n",(idCan + 1));
                        cand[idCan] = Candidato.criar();
                        idCan++;
                    }
                    break;
                    
                case 2:
                    if (idQuest >= quest.length){
                        System.out.append("Não pode ser cadastrado mais questões!");
                    } else {
                        System.out.println("Cadastro de Questões::\n1 - Somatória\n2 - Múltipla Escolha\n3 - Verdadeiro ou Falso");
                        System.out.print("Digite o tipo de questão: ");
                        opQ = ler.lerInt();

                        switch(opQ){
                            case 1:
                                quest[idQuest] = Somatoria.criar();
                                idQuest++;
                                break;
                            case 2:
                                quest[idQuest] = ME.criar();
                                idQuest++;
                                break;
                            case 3:
                                quest[idQuest] = VF.criar();
                                idQuest++;
                                break;
                            default:
                                System.out.println("A opção selecionada não existe, você será encaminhado ao menu principal!");
                                break;
                        }
                    }
                    break;
                
                case 3:
                    if(idCon >= conc.length){
                        System.out.println("Não pode ser cadastrado mais concursos!");
                    } else {
                        System.out.printf("Cadastro do %dº concurso::\n\n",(idCon + 1));
                        conc[idCon] = Concurso.criar(quest);
                        idCon++;
                    }
                    break;
                    
                case 4:
                    if(idInc >= insc.length){
                        System.out.println("Não pode ser cadastrado mais inscrições!");
                    }
                    else{
                        do{
                            System.out.println("Digite a operação desejada::");
                            System.out.println(" 1 - Cadastrar nova inscrição");
                            System.out.println(" 2 - Excluir um inscrição");
                            System.out.println(" 3 - Corrigir prova");
                            System.out.println("-1 - Sair");
                            opI = ler.lerInt();

                            switch(opI){
                                case 1:
                                    System.out.printf("Cadastro da %dº inscrição::\n\n",(idInc + 1));
                                    insc[idInc] = Inscricao.criar(cand, conc);
                                    idInc++;
                                    break;

                                case 2:
                                    System.out.println("Excluir uma inscrição::");
                                    Inscricao.excluir(insc);
                                    break;

                                case 3:
                                    System.out.println("Corrigir gabarito::");
                                    insc[idInc].corrigirGabarito();
                                    break;

                                default:
                                    System.out.println("Opção inválida");
                                    break;
                            }
                        }while(opI != -1);
                    }
                    break;
                
                default:
                    System.out.println("Comando não encontrado :( ");
                    break;
            }
        }while(opM != -1);//While do DO da main
    }
}
